<?php

class Conexion      // se declara una clase para hacer la conexion con la base de datos {
{
var $con;

function Conexion() {
// se definen los datos del servidor de base de datos 
$conection['server'] = "localhost";  //host
$conection['user'] = "root";         //  usuario
$conection['pass'] = "";  //password
$conection['base'] = "mdmdb";   //base de datos
// crea la conexion pasandole el servidor , usuario y clave
$conect = mysql_pconnect($conection['server'], $conection['user'], $conection['pass']);



if ($conect) { // si la conexion fue exitosa , selecciona la base
mysql_select_db($conection['base']);
$this->con = $conect;
}
}

function getConexion() { // devuelve la conexion
return $this->con;
}

function Close() {  // cierra la conexion
mysql_close($this->con);
}

}

class sQuery        // se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior {
{
var $pconeccion;
var $pconsulta;
var $resultados;

function sQuery() {  // constructor, solo crea una conexion usando la clase "Conexion"
$this->pconeccion = new Conexion();
}

function executeQuery($cons) {  // metodo que ejecuta una consulta y la guarda en el atributo $pconsulta
$this->pconsulta = mysql_query($cons, $this->pconeccion->getConexion());
return $this->pconsulta;
}

function getResults() {   // retorna la consulta en forma de result.
return $this->pconsulta;
}

function Close() {  // cierra la conexion
$this->pconeccion->Close();
}

function Clean() { // libera la consulta
mysql_free_result($this->pconsulta);
}

function getResultados() { // debuelve la cantidad de registros encontrados
return mysql_affected_rows($this->pconeccion->getConexion());
}

function getAffect() { // devuelve las cantidad de filas afectadas
return mysql_affected_rows($this->pconeccion->getConexion());
}

}

class Expediente    //gestion de Expedientes 
{

var $nombre;     //se declaran los atributos de la clase, que son los atributos del cliente
var $apellido;
//var $fecha;
Var $peso;
Var $id;
var $padron;
var $titular;
var $poseedor;
var $expediente;
var $nomencatastral;
var $fecha;
var $estado;
var $domicilio;
var $zona;
var $manzanalote;
var $distrito;
var $departamentoCalle1;
var $calle1;
var $mtscalle1;
var $calle2;
var $mtscalle2;
var $zonaubicacion;
var $calleubicacion;
var $manzanaubicacion;
var $distritoubicacion;
var $planillavent;
var $certiflinea;
var $planoarq;
var $planoestruc;
var $planoelect;
var $planosanit;
var $certifarq;
var $certifestruc;
var $certifelectrico;
var $cersanitario;
var $origen;

// update de expedientes

var $old;   // numero viejo del expediente
var $nuevo; // numero nuevo del expediente

//function Cliente($nro=0) // declara el constructor, si trae el numero de cliente lo busca , si no, trae todos los clientes
function Expediente($nro = 0) {
if ($nro != 0) {
$obj_expediente = new sQuery();
$result = $obj_expediente->executeQuery("select * from expedientes where expediente = $nro"); // ejecuta la consulta para traer al cliente 
$row = mysql_fetch_array($result);
$this->id = $row['id'];
$this->padron = $row['padron'];
$this->titular = $row['titular'];
$this->poseedor = $row['poseedor'];
$this->expediente = $row['expediente'];
$this->nomencatastral = $row['nomencatastral'];
$this->fecha = $row['fecha'];
$this->estado = $row['estado'];
$this->domicilio = $row['domicilio'];
$this->zona = $row['zona'];
$this->manzanalote = $row['manzanaLote'];
$this->distrito = $row['distrito'];
$this->calle1 = $row['calle1'];
$this->mtscalle1 = $row['mtsCalle1'];
$this->origen = $row['origen'];
}
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getExpedientes() {
$obj_expediente = new sQuery();
$result = $obj_expediente->executeQuery("select * from expedientes"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getID() {
return $this->id;
}

function getPadron() {
return $this->padron;
}

function getTitular() {
return $this->titular;
}

function getPoseedor() {
return $this->poseedor;
}

function getExpediente() {
return $this->expediente;
}

function getNomencatastral() {
return $this->nomencatastral;
}

function getFecha() {
return $this->fecha;
}

function getEstado() {
return $this->estado;
}

function getDomicilio() {
return $this->domicilio;
}

function getZona() {
return $this->zona;
}

function getManzanaLote() {
return $this->manzanalote;
}

function getDistrito() {
return $this->distrito;
}

function getCalle1() {
return $this->calle1;
}

function getMtscalle1() {
return $this->mtscalle1;
}

function getCalle2() {
return $this->calle2;
}

function getMtscalle2() {
return $this->mtscalle2;
}

function getZonaubicacion() {
return $this->zonaubicacion;
}

function getCalleubicacion() {
return $this->calleubicacion;
}

function getManzanaubicacion() {
return $this->manzanaubicacion;
}

function getDistritoubicacion() {
return $this->distritoubicacion;
}

function getOrigen() {
return $this->origen;
}

// metodos que setean los valores
function setPadron($val) {
$this->padron = $val;
}

function setTitular($val) {
$this->titular = $val;
}

function setPoseedor($val) {
$this->poseedor = $val;
}

function setExpediente($val) {
$this->expediente = $val;
}

function setNomencatastral($val) {
$this->nomencatastral = $val;
}

function setFecha($val) {
$this->fecha = $val;
}

function setEstado($val) {
$this->estado = $val;
}

function setDomicilio($val) {
$this->domicilio = $val;
}

function setZona($val) {
$this->zona = $val;
}

function setManzanalote($val) {
$this->manzanalote = $val;
}

function setDistrito($val) {
$this->distrito = $val;
}

function setCalle1($val) {
$this->calle1 = $val;
}

function setMtscalle1($val) {
$this->mtscalle1 = $val;
}

function setCalle2($val) {
$this->calle2 = $val;
}

function setMtscalle2($val) {
$this->mtscalle2 = $val;
}

function setZonaubicacion($val) {
$this->zonaubicacion = $val;
}

function setCalleubicacion($val) {
$this->calleubicacion = $val;
}

function setManzanaubicacion($val) {
$this->manzanaubicacion = $val;
}

function setDistritoubicacion($val) {
$this->distritoubicacion = $val;
}

function setOrigen($val) {
$this->origen = $val;
}

//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateExpediente($old,$nuevo) {
$obj_expediente = new sQuery();

//$obj_expmov = new sQuery(); //consulto los movimientos de ese expediente

$query = "update expedientes set padron='$this->padron', titular='$this->titular',poseedor='$this->poseedor',expediente='$nuevo',nomenCatastral='$this->nomencatastral',fecha='$this->fecha',estado='$this->estado',domicilio='$this->domicilio',zona='$this->zona',manzanaLote='$this->manzanalote',distrito='$this->distrito',calle1='$this->calle1',mtsCalle1='$this->mtscalle1',origen='$this->origen' where expediente = $old";

$obj_expediente->executeQuery($query);

// obtengo los movimientos de ese expedientes
$query_expmov = mysql_query("select * from movimiento where idexpte = $this->expediente") or
                 die("Problemas en el select de los movimientos:".mysql_error());



               while($row = mysql_fetch_array($query_expmov)) { //Iniciamos un ciclo para recorrer la variable $consulta que tiene la consulta previamente hecha 
                   $exp_old = $row["idexpte"];
                   $query_udpate_mov = mysql_query("update movimiento set idexpte = $this->expediente where idexpte = $exp_old");
               } 


//

 // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_expediente->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el expediente creado
function insertExpediente($val) {
$obj_expediente = new sQuery();
$query = "insert into expedientes( padron, titular, poseedor,expediente, nomencatastral, fecha, estado, domicilio, zona, manzanaLote, distrito, calle1, mtsCalle1,origen)
                            values
                            ('$this->padron', '$this->titular','$this->poseedor','$val','$this->nomencatastral','$this->fecha','$this->estado','$this->domicilio','$this->zona','$this->manzanalote','$this->distrito','$this->calle1','$this->mtscalle1','$this->origen')";

$obj_expediente->executeQuery($query); // ejecuta la consulta para traer al cliente 
//return $query . '<br/>Registros afectados: ' . $obj_expediente->getAffect(); // retorna todos los registros afectados
}

// funcion para verificar si el expediente ha sido cargado anteriormente. 

function existExpediente($val) {
//$obj_expediente = new sQuery();
$query = 'select from expedientes where expediente = '.$val.'';                            
$checkquery = mysql_query($query); // ejecuta la consulta para traer al cliente 
return mysql_num_rows($checkquery);   
}

//function deleteCliente($val)	// elimina el cliente
function deleteExpediente($val) {
$obj_expediente = new sQuery();
$query = "delete from expedientes where expediente=$val";

$querymov = "delete from movimiento where idexpte=$val";


$obj_expediente->executeQuery($query); // ejecuta la consulta para  borrar el cliente

$obj_expediente->executeQuery($querymov);

return $query . '<br/>Registros afectados: ' . $obj_expediente->getAffect(); // retorna todos los registros afectados
}

}

class Movimiento    //gestion de Movimiento de los Expedientes
{

var $idmovimiento;     //se declaran los atributos de la clase, que son los atributos del cliente
var $idexpte;
//var $fecha;
Var $usuario;
var $contrasenia;
Var $origen;
var $destino;
var $fechaingreso;
var $fechaegreso;
var $fechaaceptacion;
var $resultado;
var $fojas;
var $observaciones;
var $fechadesde;
var $fechahasta;

//function Cliente($nro=0) // declara el constructor, si trae el numero de cliente lo busca , si no, trae todos los clientes
function Movimiento($nro = 0) {
if ($nro != 0) {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where idmovimiento = $nro"); // ejecuta la consulta para traer al cliente 
$row = mysql_fetch_array($result);
$this->idmovimiento = $row['idmovimiento'];
$this->idexpte = $row['idexpte'];
$this->usuario = $row['usuario'];
$this->origen = $row['origen'];
$this->destino = $row['destino'];
$this->fechaingreso = $row['fechaingreso'];
$this->fechaegreso = $row['fechaegreso'];
$this->fechaaceptacion = $row['fechaaceptacion'];
$this->resultado = $row['resultado'];
$this->fojas = $row['fojas'];
$this->observaciones = $row['observaciones'];
}
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getMovimientos() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

function getOficinasinternas() {
$obj_movimiento = new sQuery();
$query = "select * from oficinternas";
$result = $obj_movimiento->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $result; // retorna todos los registros afectados
}

// metodos que devuelven valores
function getIdmovimiento() {
return $this->idmovimiento;
}

function getIdexpte() {
return $this->idexpte;
}

function getUsuario() {
return $this->usuario;
}

function getOrigen() {
return $this->origen;
}

function getDestino() {
return $this->destino;
}

function getFechaingreso() {
return $this->fechaingreso;
}

function getFechaegreso() {
return $this->fechaegreso;
}

function getFechaaceptacion() {
return $this->fechaaceptacion;
}

function getResultado() {
return $this->resultado;
}

function getFojas() {
return $this->fojas;
}

function getObservaciones() {
return $this->observaciones;
}

// metodos que setean los valores
function setIdmovimiento($val) {
$this->idmovimiento = $val;
}

function setIdexpte($val) {
$this->idexpte = $val;
}

function setUsuario($val) {
$this->usuario = $val;
}

function setOrigen($val) {
$this->origen = $val;
}

function setDestino($val) {
$this->destino = $val;
}

function setFechaingreso($val) {
$this->fechaingreso = $val;
}

function setFechaegreso($val) {
$this->fechaegreso = $val;
}

function setFechaaceptacion($val) {
$this->fechaaceptacion = $val;
}

function setResultado($val) {
$this->resultado = $val;
}

function setFojas($val) {
$this->fojas = $val;
}

function setObservaciones($val) {
$this->observaciones = $val;
}

function setFechaDesde($val) {
$this->fechadesde = $val;
}

function setFechaHasta($val) {
$this->fechahasta = $val;
}


//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateMovimiento() {
$obj_movimiento = new sQuery();
$query = "update movimiento set idexpte='$this->idexpte', usuario='$this->usuario',origen='$this->origen',destino='$this->destino',fechaingreso='$this->fechaingreso',fechaegreso='$this->fechaegreso',fechaaceptacion='$this->fechaaceptacion',resultado='$this->resultado',fojas='$this->fojas',observaciones='$this->observaciones' where idmovimiento = $this->idmovimiento";
$obj_movimiento->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_movimiento->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertMovimiento($exp) {
$obj_movimiento = new sQuery();
$query = "insert into movimiento(idexpte, usuario, origen,destino, fechaingreso, fechaegreso,fechasalida, resultado, fojas, observaciones,pasado)
                            values
                            ($exp,'CACHO','INGRESO','','2012-11-20','0000-00-00','0000-00-00','','','',0)";

$obj_movimiento->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_movimiento->getAffect(); // retorna todos los registros afectados




}

//function deleteCliente($val)	// elimina el cliente
function deleteMovimiento($val) {
$obj_movimiento = new sQuery();
$query = "delete from movimiento where idmovimiento=$val";
$obj_movimiento->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_movimiento->getAffect(); // retorna todos los registros afectados
}

function consultarMovimientoEnviar($val) {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where origen = '$val' and destino = ''"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

function consultarMovimiento() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where idexpte = '$this->idexpte' order by idmovimiento DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// consultar movimiento por usuario

function consultarMovimientoPorUsuario() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where usuario = '$this->usuario' order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// consultar movimiento por origen

function consultarMovimientoPorOrigen() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where origen = '$this->origen' and pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// consultar movimiento por responsable

function consultarMovimientoPorResponsable() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where usuario = '$this->usuario' and pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}


// consulta movimiento por destino

function consultarMovimientoPorDestino() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where destino = '$this->destino' and pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}


//consultarHistoricoMovimiento

function consultarHistoricoMovimiento($origen) {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where origen = '$origen' and destino <> '' and pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// consulta expedientes por responsable en un rango de fechas. 

function consultarMovimientoResponsableFechas($responsable,$fechadesde, $fechahasta) {
$obj_movimiento = new sQuery();

print $responsable;

print $fechadesde;

print $fechahasta;

$result = $obj_movimiento->executeQuery("select * from movimiento where fechaingreso >= '$fechadesde' and fechaingreso <= '$fechahasta' and usuario = '$responsable'"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// consulta de expedientes enviados por responsable

function consultarMovimientoResponsableExpedientesEnviados($responsable) {
$obj_movimiento = new sQuery();

$result = $obj_movimiento->executeQuery("select * from movimiento where fechasalida <> '0000-00-00' and usuario = '$responsable'"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

//consultarExpNoRecibidos
function consultarExpNoRecibidos() {
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes


}
//consultarExpOfiHisMov

function consultarExpOfiHisMov($origen) {

$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where origen = '$origen' and destino = '' order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

function consultarRecepcionExpediente($val) {
//			$obj_movimiento=new sQuery();
//			$query="select * from movimiento where idexpte = '$this->idexpte' order by fechaingreso";			
//			$obj_movimiento->executeQuery($query); // ejecuta la consulta para traer al cliente 
//			return $obj_movimiento;// .'<br/>Registros afectados: '.$obj_movimiento->getAffect(); // retorna todos los registros afectados
$obj_movimiento = new sQuery();
$result = $obj_movimiento->executeQuery("select * from movimiento where destino = '$val' AND pasado = 0 order by fechaingreso DESC"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

function aceptarExpediente($mov,$password) {
$obj_movimiento = new sQuery();

$result = $obj_movimiento->executeQuery("select * from movimiento where idmovimiento = $mov"); // ejecuta la consulta para traer al cliente 
$row = mysql_fetch_array($result);
$this->idexpte = $row['idexpte'];

$this->contrasenia = $password;

//consultamos por el usuario


$obj_usuario = new sQuery();

$result_usuario = $obj_usuario->executeQuery("select * from usuarios where claves = '$this->contrasenia' ");

$row_usuario = mysql_fetch_array($result_usuario);

if ($row_usuario == false)
{ 
    //echo "<br>";
    echo "<script> alert(\"USUARIO INCORRECTO O INVALIDO!\"); </script>";
}
else
{
    echo "<br>";

    echo "El usuario es" . $row_usuario['nombres'];

    $this->usuario =  $row_usuario['nombres'];
    echo "<br>";

    echo "La oficina de ese usuario es ". $row_usuario['oficina'];




//fin de gestion de usuario
//$this->origen=$row['destino']; // cruzamos el destino al origen para el nuevo registro en la tabla movimientos
$this->destino=$row['destino'];
//$this->fechaingreso = date("d-m-Y", time());
//$this->fechaegreso=$row['fechaegreso'];
//                        $this->resultado=$row['resultado'];
//                        $this->fojas=$row['fojas'];
//                        $this->observaciones=$row['observaciones'];

//$obj_acepta = new sQuery();
//$queryupdate = "update movimiento set usuario= '$this->usuario' where idmovimiento = $mov";
//$resultupdate = $obj_acepta->executeQuery($queryupdate);

// UNA VEZ QUE ACTUALIZO, TENGO QUE BUSCAR EL ANTERIOR PARA EDITAR EL VALOR DEL CAMPO PASADO A 1 

$obj_buscanterior = new sQuery();
$queryanterior = "select * from movimiento where idmovimiento = $mov";

$resultupdate = $obj_buscanterior->executeQuery($queryanterior);
$row = mysql_fetch_array($resultupdate);
// obtengo el expediente, el origen

$this->origen = $row_usuario['oficina'];//$row['destino']; // cruzamos el destino al origen para el nuevo registro en la tabla movimientos
//$this->destino=$row['destino'];
$this->fechaegreso = date("d-m-Y", time());
//$this->fechaegreso=$row['fechaegreso'];
$this->resultado = $row['resultado'];
$this->fojas = $row['fojas'];
$this->observaciones = $row['observaciones'];

$querynewmov = "insert into movimiento(idexpte, usuario, origen,destino, fechaingreso,fechaegreso, fechasalida, resultado, fojas, observaciones, pasado)
                            values
                            ('$this->idexpte','$this->usuario','$this->origen','',now(),'0000-00-00','0000-00-00','$this->resultado','$this->fojas','$this->observaciones',0)";


$newmov = $obj_movimiento->executeQuery($querynewmov);

echo " NUEVO MOVIMIENTO GENERADO N° " . $this->idmovimiento;

// ahora buscamos el registro anterior con el expte, el destino = origen y pasado = 0

$obj_buscar = new sQuery();
$querybusqued = "select * from movimiento where idexpte =  $this->idexpte and destino = '$this->destino' and pasado = 0";

$resultado = $obj_buscar->executeQuery($querybusqued);

// ahora tenemos que actualizar el registro que coincida con el numero del movimiento
$row = mysql_fetch_array($resultado);

$this->idmovimiento = $row['idmovimiento'];

// ahora editamos el registro con el campo "pasado" = 1

$obj_edit = new sQuery();
$queryedit = "update movimiento set fechaegreso = now(), pasado= 1 where idmovimiento = $this->idmovimiento";
$resultupdate = $obj_edit->executeQuery($queryedit);


echo "<br>";
echo $this->idmovimiento;
echo "<br>";
echo $this->usuario;
echo "<br>";
echo " MOVIMIENTO CON USUARIO Y FECHA DE INGRESO ACTUALIZADOS ";
}
}

// enviar expediente de una oficina a la otra

//function enviarExpediente($mov, $destino) {

function enviarExpedienteaDestino ($mov, $destino) {

//*********
    //$delete = $_POST["checkbox"]; 
    $cantidad = count($mov); 
    for ($i="0"; $i<$cantidad; $i++) {  
         $mov_id = $mov[$i]; 

         
        //******

        $obj_movimiento = new sQuery();

        echo '<br>';

        echo " Cantidad ". $cantidad;
        
        echo '<br>';

        echo " Numero de Movimiento ".$mov_id;

        echo '<br>';

        echo " Destino ".$destino;

        echo '<br>';

        $result = $obj_movimiento->executeQuery("select * from movimiento where idmovimiento = $mov_id"); // ejecuta la consulta para traer al cliente 
        $row = mysql_fetch_array($result);
        $this->idexpte = $row['idexpte'];
        $this->usuario = $row['usuario'];
        $this->origen = $row['destino']; // cruzamos el destino al origen para el nuevo registro en la tabla movimientos
        //$this->destino=$row['destino'];
        $this->fechaegreso = date("d-m-Y", time());
        //$this->fechaegreso=$row['fechaegreso'];
        $this->resultado = $row['resultado'];
        $this->fojas = $row['fojas'];
        $this->observaciones = $row['observaciones'];

        $obj_acepta = new sQuery();
        $queryupdate = "update movimiento set fechasalida = now(), destino = '$destino' where idmovimiento = $mov_id";
        $resultupdate = $obj_acepta->executeQuery($queryupdate);

        //$querynewmov = "insert into movimiento(idexpte, usuario, origen,destino, fechaingreso,fechaegreso, fechasalida, resultado, fojas, observaciones, pasado)
        //                            values
        //                            ('$this->idexpte','$this->usuario','$destino','','0000-00-00','0000-00-00','0000-00-00','$this->resultado','$this->fojas','$this->observaciones',0)";
        //
        echo " Consulta ejecutada " . $resultupdate;
//
//
//$newmov = $obj_movimiento->executeQuery($querynewmov);
//
//echo " NUEVO MOVIMIENTO GENERADO N° " . $this->idmovimiento;

//return $resultupdate; // retorna todos los clientes
}

}

}

class Usuario       //gestion de Usuarios
{

Var $idusuario;
var $nombres;
var $claves;
var $domicilio;
var $distrito;
var $departamento;
var $profesion;
var $matricula;
var $mail;
var $telefono;
var $perfil;
var $nombrel;
var $passwordl;
var $oficina;

//function Cliente($nro=0) // declara el constructor, si trae el numero de cliente lo busca , si no, trae todos los clientes
function Usuario($nro = 0) {
if ($nro != 0) {
$obj_usuario = new sQuery();
$result = $obj_usuario->executeQuery("select * from usuarios where idusuario = $nro"); // ejecuta la consulta para traer al cliente 
$row = mysql_fetch_array($result);
$this->idusuario = $row['idusuario'];
$this->nombres = $row['nombres'];
$this->claves = $row['claves'];
$this->domicilio = $row['domicilio'];
$this->distrito = $row['distrito'];
$this->departamento = $row['departamento'];
$this->profesion = $row['profesion'];
$this->matricula = $row['matricula'];
$this->mail = $row['mail'];
$this->telefono = $row['telefono'];
$this->perfil = $row['perfil'];
$this->nombrel = $row['nombrel'];
$this->passwordl = $row['passwordl'];
$this->oficina = $row['oficina'];

}
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getUsuario() {
$obj_usuario = new sQuery();
$result = $obj_usuario->executeQuery("select * from usuarios"); // ejecuta la consulta para traer al cliente 
return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getIdusuario() {
return $this->idusuario;
}

function getNombres() {
return $this->nombres;
}

function getClaves() {
return $this->claves;
}

function getDomicilio() {
return $this->domicilio;
}

function getDistrito() {
return $this->distrito;
}

function getDepartamento() {
return $this->departamento;
}

function getProfesion() {
return $this->profesion;
}

function getMatricula() {
return $this->matricula;
}

function getMail() {
return $this->mail;
}

function getTelefono() {
return $this->telefono;
}

function getPerfil() {
return $this->perfil;
}

function getNombrel() {
return $this->nombrel;
}

function getPasswordl() {
return $this->passwordl;
}

function getOficina() {
return $this->oficina;
}

// metodos que setean los valores
function setIdusuario($val) {
$this->idusuario = $val;
}

function setNombres($val) {
$this->nombres = $val;
}

function setClaves($val) {
$this->claves = $val;
}

function setDomicilio($val) {
$this->domicilio = $val;
}

function setDistrito($val) {
$this->distrito = $val;
}

function setDepartamento($val) {
$this->departamento = $val;
}

function setProfesion($val) {
$this->profesion = $val;
}

function setMatricula($val) {
$this->matricula = $val;
}

function setMail($val) {
$this->mail = $val;
}

function setTelefono($val) {
$this->telefono = $val;
}

function setPerfil($val) {
$this->perfil = $val;
}

function setNombrel($val) {
$this->nombrel = $val;
}

function setPasswordl($val) {
$this->passwordl = $val;
}

function setOficina($val) {
$this->oficina = $val;
}

//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateUsuario() {
$obj_usuario = new sQuery();
$query = "update usuarios set nombres='$this->nombres', 
          claves='$this->claves',domicilio='$this->domicilio',
          distrito='$this->distrito',departamento='$this->departamento',
          profesion='$this->profesion',matricula='$this->matricula',
          mail='$this->mail',telefono='$this->telefono',perfil='$this->perfil',
          nombrel='$this->nombrel',passwordl='$this->passwordl',oficina='$this->oficina'where idusuario = $this->idusuario";
$obj_usuario->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_usuario->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertUsuario() {
$obj_usuario = new sQuery();
$query = "insert into usuarios( nombres, claves, domicilio,distrito, departamento, profesion, matricula, mail, telefono, perfil, nombrel, passwordl, oficina)
                            values
                            ('$this->nombres', '$this->claves','$this->domicilio','$this->distrito','$this->departamento','$this->profesion','$this->matricula','$this->mail','$this->telefono','$this->perfil','$this->nombrel','$this->passwordl','$this->oficina')";

$obj_usuario->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_usuario->getAffect(); // retorna todos los registros afectados
}

//function deleteCliente($val)	// elimina el cliente
function deleteUsuario($val) {
$obj_usuario = new sQuery();
$query = "delete from usuarios where idusuario=$val";
$obj_usuario->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_usuario->getAffect(); // retorna todos los registros afectados
}

function verificarUsuarioLogin($usu, $pass)
{
$obj_usuario = new sQuery();
$query = "select * from usuarios where nombrel= '$usu' and passwordl = '$pass'";
$obj_usuario->executeQuery($query); // ejecuta la consulta para  borrar el cliente

$cant = $obj_usuario->getResultados();

if ($cant == 1)
{
    return 1;
}
 else 
{
     return 0;
}

//return $query . '<br/> Registros afectados: ' . $obj_usuario->getAffect(); // retorna todos los registros afectados
    
}

}

class Sector        //gestion de Observacines - Sector
{
    Var $idsector;
    var $nombre;
    var $gremioobs;
    
    function Sector($nro = 0) { //tener presente que los datos para $row[''] son los nombres de la tabla en bd. 
        if ($nro != 0) 
        {
            $obj_sector = new sQuery();
            $result = $obj_sector->executeQuery("select * from sectoroficial where idsector = $nro"); // ejecuta la consulta para traer al cliente 
            $row = mysql_fetch_array($result);
            $this->idsector = $row['idsector'];
            $this->nombre = $row['nombre'];
            $this->gremioobs = $row['gremio'];

        }
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getSectorArquitectura() 
{
    $obj_sector = new sQuery();
    $result = $obj_sector->executeQuery("select * from sectoroficial where gremio = 'ARQUITECTURA' "); // ejecuta la consulta para traer al cliente 
    return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getIdsector() {
return $this->idsector;
}

function getNombre() {
return $this->nombre;
}

function getObservacion(){
    return $this->gremioobs;
}

// metodos que setean los valores
function setIdsector($val) {
$this->idsector = $val;
}

function setNombre($val) {
$this->nombre = $val;
}

function setObservacion($val){
    $this->gremioobs = $val;
}

//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateSector() {
$obj_sector = new sQuery();
$query = "update sectoroficial set nombre='$this->nombre', gremio ='$this->gremioobs' 
          where idsector = $this->idsector";
$obj_sector->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_sector->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertSectorArquitectura() {
$obj_sector = new sQuery();
$query = "insert into sectoroficial( nombre,gremio)
                            values
                            ('$this->nombre', 'ARQUITECTURA')"; // INGRESAMOS SECTOR PARA ARQUITECTURA

$obj_sector->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_sector->getAffect(); // retorna todos los registros afectados
}

//function deleteCliente($val)	// elimina el cliente
function deleteSector($val) {
$obj_sector = new sQuery();
$query = "delete from sectoroficial where idsector = $val";
$obj_sector->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_sector->getAffect(); // retorna todos los registros afectados
}

}

class Observacion   //gestion de Observacioines - Observacion
{
    Var $idobservacion;
    var $nombre;
    var $idsector; //lo necesito para vincularlo al sector correspondiente
    var $sectornombre;
    var $gremio;
    
    function Observacion($nro = 0) {
        if ($nro != 0) 
        {
            $obj_observacion = new sQuery();
            $result = $obj_observacion->executeQuery("select * from observacionoficial where idobservacion = $nro"); // ejecuta la consulta para traer al cliente 
            $row = mysql_fetch_array($result);
            $this->idobservacion = $row['idobservacion'];
            $this->nombre = $row['nombre'];
            $this->sectornombre = $row['sectornombre'];
            $this->gremio = $row['']; // COMPLETAR

        }
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getObservacion() 
{
    $obj_observacion = new sQuery();
    $result = $obj_observacion->executeQuery("select * from observacionoficial"); // ejecuta la consulta para traer al cliente 
    return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getIdobservacion() {
return $this->idobservacion;
}

function getNombre() {
return $this->nombre;
}

function geSectorNombre() {
return $this->sectornombre;
}

// metodos que setean los valores
function setIdobservacion($val) {
$this->idobservacion = $val;
}

function setNombre($val) {
$this->nombre = $val;
}

function setSectorNombre($val) {
$this->sectornombre = $val;
}

function setIdSector($val){
    $this->idsector = $val;
}

//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateObservacion() {
$obj_observacion = new sQuery();
$query = "update observacionoficial set nombre='$this->nombre',sectornombre = $this->sectornombre 
          where idobservacion = $this->idobservacion";
$obj_observacion->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_observacion->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertObservacionArquitectura() {
$obj_observacion = new sQuery();
$query = "insert into observacionoficial(nombre,idsectoroficial)
                            values
                            ('$this->nombre','$this->sectornombre')";

$obj_observacion->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_observacion->getAffect(); // retorna todos los registros afectados
}

//function deleteCliente($val)	// elimina el cliente
function deleteObservacion($val) {
$obj_observacion = new sQuery();
$query = "delete from observacionoficial where idobservacion= $val";
$obj_observacion->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_observacion->getAffect(); // retorna todos los registros afectados
} 

// funcion que consulta las observaciones para un determinado sector y gremio, en este caso, Arquitectura
function getObservacion_SectorArquitectura(){
  $obj_observacion = new sQuery();
$query = $obj_observacion->executeQuery("select * from observacionoficial where idsectoroficial = $this->idsector order by idobservacion"); // ejecuta la consulta para  borrar el cliente
return $query; // retorna todos los registros afectados  
}

function getDescripcion_ObservacionArquitectura(){
     $obj_descripcion = new sQuery();
$query = $obj_descripcion->executeQuery("select * from descripcionoficial where idobservacionoficial = $this->idobservacion order by iddescripcion"); // ejecuta la consulta para  borrar el cliente
return $query; // retorna todos los registros afectados   
}



}

class Descripcion   //gestion de Observacuibes - Descripcion
{
    var $iddescripcion;
    var $nombre;
    var $observacionnombre;
    var $idsector;
    var $idobservacion;
    
    function Descripcion($nro = 0) {
        if ($nro != 0) 
        {
            $obj_descripcion = new sQuery();
            $result = $obj_descripcion->executeQuery("select * from descripcionoficial where iddescripcion = $nro"); // ejecuta la consulta para traer al cliente 
            $row = mysql_fetch_array($result);
            $this->idobservacion = $row['iddescripcion'];
            $this->nombre = $row['nombre'];
            $this->observacionnombre = $row['observacionnombre'];

        }
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getDescripcion() 
{
    $obj_descripcion = new sQuery();
    $result = $obj_descripcion->executeQuery("select * from descripcionoficial"); // ejecuta la consulta para traer al cliente 
    return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getIdDescripcion() {
return $this->iddescripcion;
}

function getNombre() {
return $this->nombre;
}

function getObservacionNombre() {
return $this->observacionnombre;
}

// metodos que setean los valores
function setIddescripcion($val) {
$this->iddescripcion = $val;
}

function setNombre($val) {
$this->nombre = $val;
}

function setObservacionNombre($val) {
$this->observacionnombre = $val;
}

function setSector($val){
    $this->idsector = $val;
    
}

function setIdObservacion($val){
    $this->idobservacion = $val;
}

//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateDescripcion() {
$obj_descripcion = new sQuery();
$query = "update descripcionoficial set nombre='$this->nombre',observacionnombre = $this->observacionnombre 
          where iddescripcion = $this->iddescripcion";
$obj_descripcion->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_descripcion->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertDescripcion() {
$obj_descripcion = new sQuery();
$query = "insert into descripcionoficial(nombre,observacionnombre)
                            values
                            ('$this->nombre','$this->observacionnombre')";

$obj_descripcion->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_descripcion->getAffect(); // retorna todos los registros afectados
}

// funcion para agregar una descripcion nueva despues de haber consultado un sector y una observacion. 

function insertDescripcionArquitectura($val){
 $obj_descripcion = new sQuery();
$query = "insert into descripcionoficial(nombre,idobservacionoficial)
                            values
                            ('$this->nombre',1)";

$obj_descripcion->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_descripcion->getAffect(); // retorna todos los registros afectados   
}


//function deleteCliente($val)	// elimina el cliente
function deleteDescripcion($val) {
$obj_descripcion = new sQuery();
$query = "delete from descripcionoficial where iddescripcion= $val";
$obj_descripcion->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_descripcion->getAffect(); // retorna todos los registros afectados
} 

// funcion para consultar observaciones segun el sector que elijo. 

function getObservaciones_Sector(){
  $obj_observacion = new sQuery();
$query = $obj_observacion->executeQuery("select * from observacionoficial where idsectoroficial = $this->idsector order by nombre"); // ejecuta la consulta para  borrar el cliente
return $query; // retorna todos los registros afectados      
}

function getDescripciones_Observacion(){
    $obj_descripcion = new sQuery();
$query = $obj_descripcion->executeQuery("select * from descripcionoficial where idobservacionoficial = $this->idobservacion order by nombre"); // ejecuta la consulta para  borrar el cliente
return $query; // retorna todos los registros afectados       
}

}

class ObsOficial   //gestion de Observacioines - Observacion
{
    Var $idobsoficial;
    var $nombre;
    var $descripcionnombre; //lo necesito para vincularlo al sector correspondiente
    var $sectornombre;
    var $observacionnombre;
    var $oficina;
    
    function ObsOficial($nro = 0) {
        if ($nro != 0) 
        {
            $obj_obsoficial = new sQuery();
            $result = $obj_obsoficial->executeQuery("select * from obsoficial where idobsoficial = $nro"); 
            $row = mysql_fetch_array($result);
            $this->idobsoficial = $row['idobsoficial'];
            $this->descripcionnombre = $row['descripcion'];
            $this->sectornombre = $row['sector'];
            $this->observacionnombre = $row['observacion'];
            $this->oficina = $row['oficina'];
            

        }
}

//function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes 
function getObsOficial() 
{
    $obj_obsoficial = new sQuery();
    $result = $obj_obsoficial->executeQuery("select * from obsoficial"); // ejecuta la consulta para traer al cliente 
    return $result; // retorna todos los clientes
}

// metodos que devuelven valores
function getIdobsOficial() {
return $this->idobsoficial;
}

function getSectorNombre() {
return $this->sectornombre;
}

function getDescripcionNombre() {
return $this->descripcionnombre;
}

function getObservacionNombre() {
return $this->observacionnombre;
}

function getOficina() {
return $this->oficina;;
}
// metodos que setean los valores
function setIdobsOficial($val) {
$this->idobsoficial = $val;
}

function setDescripcionNombre($val) {
$this->descripcionnombre = $val;
}

function setSectorNombre($val) {
$this->sectornombre = $val;
}

function setObservacionNombre($val) {
$this->observacionnombre = $val;
}

function setOficina($val) {
$this->oficina = $val;
}


//function updateCliente()	// actualiza el cliente cargado en los atributos
function updateObsOficial() {
$obj_obsoficial = new sQuery();
$query = "update obsoficial set sector = '$this->sectornombre',observacion = $this->observacionnombre ,descripcion = $this->descripcionnombre ,oficina = $this->oficina 
          where idobsoficial = $this->idobsoficial";
$obj_obsoficial->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_obsoficial->getAffect(); // retorna todos los registros afectados
}

//function insertCliente()	// inserta el cliente cargado en los atributos
function insertObsOficial() {
$obj_obsoficial = new sQuery();
$query = "insert into obsoficial(sector, observacion, descripcion,oficina)
                            values
                            ('$this->sectornombre','$this->observacionnombre','$this->descripcionnombre','$this->oficina')";

$obj_obsoficial->executeQuery($query); // ejecuta la consulta para traer al cliente 
return $query . '<br/>Registros afectados: ' . $obj_obsoficial->getAffect(); // retorna todos los registros afectados
}

//function deleteCliente($val)	// elimina el cliente
function deleteObsOficial($val) {
$obj_obsoficial = new sQuery();
$query = "delete from obsoficial where idobsoficial= $val";
$obj_obsoficial->executeQuery($query); // ejecuta la consulta para  borrar el cliente
return $query . '<br/>Registros afectados: ' . $obj_obsoficial->getAffect(); // retorna todos los registros afectados
}

function completarObservacion($val){
$obj_obsoficial = new sQuery();
$query = "select * from observacionoficial where sectornombre = '$val'";
$obj_obsoficial->executeQuery($query); // ejecuta la consulta para  borrar el cliente
?>
       <select name="descripcioncbo" type="text">

       <?php
       while($row = mysql_fetch_array($registrosint)) { //Iniciamos un ciclo para recorrer la variable $consulta que tiene la consulta previamente hecha 

       //$valor = $row["idofic"] ; //Asignamos el id del campo que quieras mostrar
       //$nombre = $row["oficinainterna"]; // Asignamos el nombre del campo que quieras mostrar
       echo "<option>".$row["nombre"]."</option>"; //Llenamos el option con su value que sera lo que se lleve al archivo registrar.php y que sera el id de tu campo y luego concatenamos tbn el nombre que se mostrara en el combo 
       } 

       ?>   

       </select>
       <?php
return $query . '<br/>Registros afectados: ' . $obj_obsoficial->getAffect(); // retorna todos los registros afectados    
}

}

class Obra
{
    Var $nroobra;
    var $nroexpediente;
    var $superficie; //lo necesito para vincularlo al sector correspondiente
    var $bocas;
    var $recintos;
    var $puntaje;
    var $tipo;
    var $destino;
    var $trabajo;
    var $estadoobra;
    var $monto;
    
    function getNroObra() {
    return $this->nroobra;
    }

    function getNroExpediente() {
    return $this->nroexpediente;
    }

    function getSuperficie() {
    return $this->superficie;
    }

    function getBocas() {
    return $this->bocas;
    }

    function getRecintos() {
    return $this->recintos;
    }
    
    function getPuntaje() {
    return $this->puntaje;
    }
    
    function getTipo() {
    return $this->tipo;
    }
    
    function getDestino() {
    return $this->destino;
    }
    
    function getTrabajo() {
    return $this->trabajo;
    }

    
    function getEstadoObra(){
        return $this->estadoobra;
    }
    
    function getMonto(){
        return $this->monto;
    }
    
    // metodos que setean los valores
    function setNroObra($val) {
    $this->nroobra = $val;
    }

    function setNroExpediente($val) {
    $this->nroexpediente = $val;
    }

    function setSuperficie($val) {
    $this->superficie = $val;
    }

    function setBocas($val) {
    $this->bocas= $val;
    }

    function setRecintos($val) {
    $this->recintos = $val;
    }
    
    function setPuntaje($val) {
    $this->puntaje = $val;
    }

    function setTipo($val) {
    $this->tipo = $val;
    }
    function setDestino($val) {
    $this->destino = $val;
    }
    function setTrabajo($val) {
    $this->trabajo = $val;
    }
    
    function setEstadoObra($val){
        $this->estadoobra = $val;
    }
    
    function setMonto($val){
        $this->monto = $val;
    }
    
    
    
    function getObras() {
        $obj_obras= new sQuery();
        $result = $obj_obras->executeQuery("select * from obras"); // ejecuta la consulta para traer al cliente 
        return $result; // retorna todos los clientes
    }
    
    function insertObras($val) {
    $obj_obras = new sQuery();
    $query = "insert into obras(superficie, bocas, recintos, puntaje, tipo, destino, monto, idexpte, trabajo, estadoobra)
                            values
                            ('$this->superficie','$this->bocas','$this->recintos','$this->puntaje','$this->tipo','$this->destino','$this->monto','$this->nroexpediente','$this->trabajo','$this->estadoobra')";

    $obj_obras->executeQuery($query); // ejecuta la consulta para traer al cliente 
//return $query . '<br/>Registros afectados: ' . $obj_expediente->getAffect(); // retorna todos los registros afectados
    }
    
    function updateObra($val) {
        $obj_obra = new sQuery();
        
        $query = "update obras set Superficie='$this->superficie', bocas='$this->bocas',recintos='$this->recintos',puntaje='$this->puntaje',tipo='$this->tipo',destino='$this->destino',monto='$this->monto' where idobra = $val";

        $obj_obra->executeQuery($query);

    }
    
    function deleteObra($val){
        $obj_obra = new sQuery();
        $query = "delete from obras where idobra = $val";
        $obj_obra->executeQuery($query); // ejecuta la consulta para  borrar el cliente
    }

}
?>

